package com.grupoconstruobras.sigo.security.auth.data;

import com.grupoconstruobras.sigo.security.audit.AuditorEntityListener;
import com.grupoconstruobras.sigo.security.audit.data.catalogue.BaseCatalogueAuditEntity;

import java.io.Serializable;
import java.util.List;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@EntityListeners(AuditorEntityListener.class)
@Entity
@Table(name = "rol", schema = "seguridad")
@AttributeOverrides({ @AttributeOverride(name = "id", column = @Column(name = "idrol")) })
@SequenceGenerator(name = "simple_identifier", schema = "seguridad", sequenceName = "role_idrole_seq", initialValue = 1, allocationSize = 1)
public class Rol extends BaseCatalogueAuditEntity<Long, Rol> implements Serializable {
	private static final long serialVersionUID = 1L;

	


	//bi-directional many-to-one association to Relacionrolrecurso
	@OneToMany(mappedBy="rol")
	private List<Relacionrolrecurso> relacionrolrecursos;

	//bi-directional many-to-one association to Relacionrolrecursofuncionalidad
	@OneToMany(mappedBy="rol")
	private List<Relacionrolrecursofuncionalidad> relacionrolrecursofuncionalidads;

	public Rol() {
	}

	public Rol(Long id) {
		this.id = id;
	}


	public List<Relacionrolrecurso> getRelacionrolrecursos() {
		return this.relacionrolrecursos;
	}

	public void setRelacionrolrecursos(List<Relacionrolrecurso> relacionrolrecursos) {
		this.relacionrolrecursos = relacionrolrecursos;
	}

	public Relacionrolrecurso addRelacionrolrecurso(Relacionrolrecurso relacionrolrecurso) {
		getRelacionrolrecursos().add(relacionrolrecurso);
		relacionrolrecurso.setRol(this);

		return relacionrolrecurso;
	}

	public Relacionrolrecurso removeRelacionrolrecurso(Relacionrolrecurso relacionrolrecurso) {
		getRelacionrolrecursos().remove(relacionrolrecurso);
		relacionrolrecurso.setRol(null);

		return relacionrolrecurso;
	}

	public List<Relacionrolrecursofuncionalidad> getRelacionrolrecursofuncionalidads() {
		return this.relacionrolrecursofuncionalidads;
	}

	public void setRelacionrolrecursofuncionalidads(List<Relacionrolrecursofuncionalidad> relacionrolrecursofuncionalidads) {
		this.relacionrolrecursofuncionalidads = relacionrolrecursofuncionalidads;
	}

	public Relacionrolrecursofuncionalidad addRelacionrolrecursofuncionalidad(Relacionrolrecursofuncionalidad relacionrolrecursofuncionalidad) {
		getRelacionrolrecursofuncionalidads().add(relacionrolrecursofuncionalidad);
		relacionrolrecursofuncionalidad.setRol(this);

		return relacionrolrecursofuncionalidad;
	}

	public Relacionrolrecursofuncionalidad removeRelacionrolrecursofuncionalidad(Relacionrolrecursofuncionalidad relacionrolrecursofuncionalidad) {
		getRelacionrolrecursofuncionalidads().remove(relacionrolrecursofuncionalidad);
		relacionrolrecursofuncionalidad.setRol(null);

		return relacionrolrecursofuncionalidad;
	}

}